Flash memory stores information in an array of memory cells made from floating-gate transistors. In traditional single-level cell (SLC) flash memory devices, each cell stores only one bit of information. Multi-level cell (MLC) flash memory devices can store more than one bit per cell by choosing between multiple levels of electrical charge to apply to the floating gates of its cells. The flash cell is programmed by applying a voltage to a gate of a cell using a wordline that is coupled to the gate. Voltage reference generators are used to produce the applied voltage.